class Usuarios::JogadorController < ApplicationController
  
  layout "application"
  before_filter :verificaAdministrador, :only => [:buscar,:listar,:remover]
  before_filter :verificaPermissao, :except => [:novo,:criar]
  before_filter :jogoEmAndamento, :only => [:editar, :atualizar]
  
  def novo
    @jogador = Usuarios::Jogador.new()
  end
  
  def criar
    @jogador = Usuarios::Jogador.new(params[:jogador])
    if @jogador.validarDados
      @jogador.criar
      render :update do |page|
        page.redirect_to(:action => :listar)
      end
    else
      render :update do |page|
        page.select('.erroMat').each do |div|
          div.hide
        end
        page.select('.noicon1').each do |div|
          div.hide
        end
        @jogador.errors.each do |atributo, erro|
          page.replace_html("erro_#{atributo}", erro)
          page.show("erro_#{atributo}")
          page.show("noiconid_#{atributo}")
        end
      end
    end
  end
  
  def editar
    @jogador = Usuarios::Jogador.buscarJogadores(:first, :conditions => {:id => params[:id]})
    if not @jogador
      flash[:message] = "Jogador não encontrado"
      redirect_to :action => :listar
      return
    end
    @jogador.confirmacaoSenha = @jogador.senha
  end
  
  def atualizar
    @jogador = Usuarios::Jogador.buscarJogadores(:first, :conditions => {:id => params[:jogador][:id]})
    if not @jogador
      render :update do |page|
        page.replace_html("not_found", "Jogador nao existe")
      end
    else
      @jogador.attributes = params[:jogador]
      if @jogador.validarDados
        @jogador.atualizar(params[:jogador])
        if session[:administrador_id].present?
          render :update do |page|
            page.redirect_to(:action => :listar)
          end
        else
          render :update do |page|
            page.redirect_to('/menu_jogador/menu')
          end
        end
      else
        render :update do |page|
          page.select('.erro').each do |div|
            div.hide
          end
          page.select('.noicon1').each do |div|
            div.hide
          end
          @jogador.errors.each do |atributo, erro|
            page.replace_html("erro_#{atributo}", erro)
            page.show("erro_#{atributo}")
            page.show("noiconid_#{atributo}")
          end
        end
      end
    end
  end
  
  def listar
    if params[:filtro]
        @jogadores = Usuarios::Jogador.paginate(:page => params[:page], :per_page => 10, :order => 'login', :conditions => ["login LIKE ?", '%' + params[:filtro][:login] + '%'])
        @filtro_params = {}
        @filtro_params[:login] = params[:filtro][:login]
    else        
        @jogadores = Usuarios::Jogador.paginate(:page => params[:page], :per_page => 10, :order => 'login')
    end
  end
  
  def remover
    if @manutencao
      @jogador = Usuarios::Jogador.buscarJogadores(:first, :conditions => {:id => params[:id]})
      flash[:message] = "Jogador não encontrado"
      if @jogador
        if @jogador.remover
          flash[:message] = "Jogador removido com sucesso"
        else
          flash[:message] = "Jogador não pode ser removido"
        end
      end
    else
      flash[:message] = "Acione a manutenção."
    end
    redirect_to :action => :listar
  end
  
  def visualizar
    @jogador = Usuarios::Jogador.buscarJogadores(:first, :conditions => {:id => params[:id]})
    if not @jogador
      flash[:message] = "Jogador não encontrado"
      redirect_to :action => :listar
      return
    end
    @jogador.confirmacaoSenha = @jogador.senha
  end
  
  protected
  
  def verificaPermissao
    if not session[:administrador_id].present? #administrador tem acesso a todas
      if session[:jogador_id].present? #jogador so tem acesso aos seus dados
        if params[:id].present?
          if not session[:jogador_id] == params[:id] #caso seja um jogador tentando alterar dados dos outros
            flash[:erro] = 'Acesso negado!'
            redirect_to('/login/index')
          end
        elsif params[:jogador][:id].present?
          if not session[:jogador_id] == params[:jogador][:id] #caso seja um jogador tentando alterar dados dos outros
            flash[:erro] = 'Acesso negado!'
            redirect_to('/login/index')
          end
        else #caso nao tenha sido passado parmetro
          flash[:erro] = 'Acesso negado!'
            redirect_to('/login/index')
        end
      else #caso nao seja  um jogador nem administrador
        flash[:erro] = 'Acesso negado!'
        redirect_to('/login/index')
      end
    end
  end
  
  
end
